package com.xbongbong.saas.service;

import com.xbongbong.paas.pojo.dto.SaasFormSaveDTO;
import com.xbongbong.paas.pojo.dto.ValidateDataDTO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisDeleteDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisDetailDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisFormGetDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisFormSaveDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisListDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisSearchListDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisSwotGetDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisSwotUpdateDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisUpdateDTO;
import com.xbongbong.pro.competitor.pojo.dto.CompetitorAnalysisUpdateGetDTO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisDeleteVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisDetailVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisFormGetVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisFormSaveVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisListVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisSearchListVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisSwotGetVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisSwotUpdateVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisUpdateGetVO;
import com.xbongbong.pro.competitor.pojo.vo.CompetitorAnalysisUpdateVO;
import com.xbongbong.pro.formdata.pojo.AfterSavePojo;
import com.xbongbong.pro.formexplain.pojo.dto.HandlerExplainInLinkItemDTO;

/**
 * @author: yingjf
 * @date: 2022/8/17 11:01
 * @description: 竞争对手分析接口
 */
public interface CompetitorAnalysisService {
    /**
     * 保存前saas特殊校验
     *
     * @param validateDataDTO saas特殊校验数据入参
     * @throws XbbException 业务异常
     */
    void beforeSave(ValidateDataDTO validateDataDTO) throws XbbException;

    /**
     * 保存后逻辑
     *
     * @param saasFormSaveDTO saas保存数据
     * @throws XbbException 业务异常
     */
    AfterSavePojo afterSave(SaasFormSaveDTO saasFormSaveDTO) throws XbbException;

    /**
     * 竞争对手分析表单解释获取
     * date: 2022/8/17 11:12 上午
     * @author yingjf
     * @param competitorAnalysisFormGetDTO:
     */
    CompetitorAnalysisFormGetVO formGet(CompetitorAnalysisFormGetDTO competitorAnalysisFormGetDTO)throws XbbException;

    /**
     * 竞争对手分析表单解释保存
     * date: 2022/8/17 2:10 下午
     * @author yingjf
     * @param competitorAnalysisFormSaveDTO:
     */
    CompetitorAnalysisFormSaveVO formSave(CompetitorAnalysisFormSaveDTO competitorAnalysisFormSaveDTO)throws XbbException;

    /**
     * 关联新建时格式化解释
     * date: 2022/8/22 9:42 上午
     * @author yingjf
     * @param handlerExplainInLinkItemDTO:
     */
    void formatLinkAddExplain(HandlerExplainInLinkItemDTO handlerExplainInLinkItemDTO) throws XbbException;

    /**
     * 机会详情tab查询竞争对手列表
     * date: 2022/8/25 7:32 下午
     * @author yingjf
     * @param competitorAnalysisListDTO:
     */
    CompetitorAnalysisListVO list(CompetitorAnalysisListDTO competitorAnalysisListDTO)throws XbbException;

    /**
     * 机会详情tab竞争对手编辑数据获取
     * date: 2022/8/26 3:11 下午
     * @author yingjf
     * @param competitorAnalysisUpdateGetDTO:
     */
    CompetitorAnalysisUpdateGetVO updateGet(CompetitorAnalysisUpdateGetDTO competitorAnalysisUpdateGetDTO)throws XbbException;

    /**
     * 删除单条竞争对手分析数据
     * date: 2022/8/26 3:56 下午
     * @author yingjf
     * @param competitorAnalysisDeleteDTO:
     */
    CompetitorAnalysisDeleteVO delete(CompetitorAnalysisDeleteDTO competitorAnalysisDeleteDTO)throws XbbException;

    /**
     * 更新竞争对手分析数据
     * date: 2022/8/29 2:21 下午
     * @author yingjf
     * @param competitorAnalysisUpdateDTO:
     */
    CompetitorAnalysisUpdateVO update(CompetitorAnalysisUpdateDTO competitorAnalysisUpdateDTO)throws XbbException;

    /**
     * 竞争对手分析swot获取
     * date: 2022/8/29 3:50 下午
     * @author yingjf
     * @param competitorAnalysisSwotGetDTO:
     */
    CompetitorAnalysisSwotGetVO swotGet(CompetitorAnalysisSwotGetDTO competitorAnalysisSwotGetDTO)throws XbbException;

    /**
     * 竞争对手分析swot更新
     * date: 2022/8/29 4:13 下午
     * @author yingjf
     * @param competitorAnalysisSwotUpdateDTO:
     */
    CompetitorAnalysisSwotUpdateVO swotUpdate(CompetitorAnalysisSwotUpdateDTO competitorAnalysisSwotUpdateDTO)throws XbbException;

    /**
     * 竞争对手分析swot左上角的搜索接口
     * date: 2022/8/29 6:23 下午
     * @author yingjf
     * @param competitorAnalysisSearchListDTO:
     */
    CompetitorAnalysisSearchListVO searchList(CompetitorAnalysisSearchListDTO competitorAnalysisSearchListDTO)throws XbbException;

    /**
     * 移动端专有的 竞争对手分析单个的详情
     * date: 2022/9/6 1:34 下午
     * @author yingjf
     * @param competitorAnalysisDetailDTO:
     */
    CompetitorAnalysisDetailVO detail(CompetitorAnalysisDetailDTO competitorAnalysisDetailDTO)throws XbbException;
}
